package cmd

import (
	"fmt"
	"os"

	"gitee.com/whouys/file-download/fileserver"
	"gitee.com/whouys/file-download/version"

	"github.com/spf13/cobra"
)

var (
	filePath string
	port     string
	vers     bool
)

var RootCmd = &cobra.Command{
	Use:   "Download",
	Short: "Download",
	RunE: func(cmd *cobra.Command, args []string) error {
		// 手动调用帮助函数
		if len(os.Args) == 1 {
			_ = cmd.Help()
			os.Exit(0)
		}

		if vers {
			fmt.Println(version.FullVersion())
			return nil
		}

		// 接口实例化
		var svc fileserver.Service
		// 初始化结构体
		d := fileserver.Dir{FilesPath: filePath, Port: port}

		// 将结构体赋值给接口（原本接口和结构体是没有关系的，赋值之后，接口下的函数就可以使用结构体的变量）
		svc = &d

		// 启动http服务
		svc.StartFileService()

		return nil
	},
}

func init() {
	f := RootCmd.PersistentFlags()
	f.StringVarP(&filePath, "filePath", "f", ".", "Default filesPath . ")
	f.StringVarP(&port, "port", "p", "9090", "Default port 9090 ")
	f.BoolVarP(&vers, "version", "v", false, "show version")
}
